#ifndef GAMEOBJECT_H_INCLUDED
#define GAMEOBJECT_H_INCLUDED
#include <map>
#include "File.h"
#include "Rectangle.h"
#include "Vec3.h"
#include "AABB.h"

class GameObject 
{
public:
	virtual ~GameObject() {}
	virtual void Draw() = 0;
	virtual void Update() = 0;
	virtual const char* GetTypeName() const =0;
	virtual Vec3f* GetPos()
	{
		return &m_pos;
	}
	virtual Vec3f* GetVel()
	{
		return &m_vel;
	}
	virtual bool Load(File*)
	{
		return true;
	}
	const AABB& GetAABB() const
	{
		return m_AABB;
	}
	void SetId(int NewId)
	{
		m_id = NewId;
	}


protected:
	int m_id;
	AABB m_AABB;

	Vec3f m_vel;
	Vec3f m_acc;
	Vec3f m_pos;


};
typedef std::map<int, GameObject*> GameObjectsMap;
#endif